package com.warren.beans.factory.support;

import com.warren.error.BeansException;
import com.warren.beans.factory.config.BeanDefinition;

import java.lang.reflect.Constructor;

/**
 * @author warren
 * @create 2021-08-18 19:30
 * @Description 实例化策略接口
 */
public interface InstantiationStrategy {

    // Constructor  你可能会有一点陌生，它是  java.lang.reflect  包下的
    //Constructor  类，里面包含了一些必要的类信息，有这个参数的目的就是为了拿到
    //符合入参信息相对应的构造函数。
    //args  就是一个具体的入参信息了，最终实例化时候会用到
    Object instantiate(BeanDefinition beanDefinition, String beanName, Constructor
            ctor, Object[] args) throws BeansException;
}
